# 创建蓝图对象
from flask import Blueprint

"""
蓝图的作用: 实现Flask项目 模块化
项目模块化主要是 将业务以功能模块进行划分, 每个功能模块对应一个包, 用于存放和其有关的视图/工具/模型文件等, 如home, user
对于大型项目, 一般 每个功能模块对应创建一个蓝图, 由多个蓝图代替应用来分别管理各模块的视图


 02_蓝图 # 工程目录
  |------ main.py # 启动文件
  |------ home  # 首页模块
  |  |--- __init__.py  # 包的初始化文件, 此处创建管理首页模块的蓝图对象
  |  |--- views.py  # 视图文件


蓝图的三个使用细节
    创建蓝图时, 可以通过 url_prefix参数 给蓝图定义的路由添加 统一的URL资源段前缀
    蓝图定义的路由, 其函数标记为 蓝图名.函数名
    蓝图也可以 设置请求钩子
        只有访问该蓝图定义的路由时才会触发
        实现局部监听
"""

# 1. 创建蓝图对象
# 细节1: 可以通过url_prefix参数给蓝图定义的路由添加统一的URL资源段前缀
home_blu = Blueprint("home_b", __name__, url_prefix='/home')


# 细节3: 蓝图也可以设置请求钩子 只有访问该蓝图定义的路由时才会触发 局部监听
@home_blu.before_request
def home_prepare():
    print('home_prepare')


# 视图文件目前是独立的, 还需要 包的初始化文件导入视图文件, 让视图文件和主程序建立关联
# 4. 让视图文件和主程序建立关联
# 遇到ImportError, 需要查看和调整代码的执行顺序
from . import views
